b81822043e2220fedb396c80066c27ef5f12bea5,plugins/org.eclipse.xtext.ui.common/src/org/eclipse/xtext/ui/common/editor/hyperlinking/DefaultHyperlinkDetector.java,DefaultHyperlinkDetector,detectHyperlinks,#ITextViewer#IRegion#boolean#,80
Before Change
* @see org.eclipse.jface.text.hyperlink.IHyperlinkDetector#detectHyperlinks(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion, boolean)
*/
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, final IRegion region, boolean canShowMultipleHyperlinks) {
return ((IXtextDocument)textViewer.getDocument()).readOnly(new UnitOfWork<IHyperlink[]>() {
public IHyperlink[] exec(XtextResource resource) throws Exception {
IParseResult parseResult = resource.getParseResult();
Assert.isNotNull(parseResult);
AbstractNode abstractNode = ParseTreeUtil.getCurrentOrFollowingNodeByOffset(parseResult.getRootNode(),
region.getOffset());
final Region location = new Region(abstractNode.getOffset(), abstractNode.getLength());
List<EObject> crossLinkedEObjects = findCrossLinkedEObject(abstractNode);
if (crossLinkedEObjects.isEmpty())
return null;
List<IHyperlink> links = new ArrayList<IHyperlink>();
for (EObject crossReffed : crossLinkedEObjects) {
final String label = labelProvider.getText(crossReffed);
final URI uri = EcoreUtil.getURI(crossReffed);
final URI normalized = crossReffed.eResource().getResourceSet().getURIConverter().normalize(uri);
links.add(new IHyperlink() {
public IRegion getHyperlinkRegion() {
return location;
}
public String getHyperlinkText() {
return label;
}
public String getTypeLabel() {
return null;
}
public void open() {
new OpenDeclarationAction(normalized, locationProvider).run();
}
});
}
return links.toArray(new IHyperlink[links.size()]);
}
});
}
public Object execute(ExecutionEvent event) throws ExecutionException {
After Change
* @see org.eclipse.jface.text.hyperlink.IHyperlinkDetector#detectHyperlinks(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion, boolean)
*/
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, final IRegion region, final boolean canShowMultipleHyperlinks) {
return ((IXtextDocument)textViewer.getDocument()).readOnly(new UnitOfWork<IHyperlink[]>() {
public IHyperlink[] exec(XtextResource resource) throws Exception {
return helper.createHyperlinksByOffset(resource, region.getOffset(), canShowMultipleHyperlinks);
}
});
}
public Object execute(ExecutionEvent event) throws ExecutionException {